package dome2;

public class Derived extends Base {
    int a;    // 与⽗类中成员变量同名且类型相同

    // 与⽗类中methodA()构成重载
    public void methodA(int a) {
        System.out.println("Derived中的method()⽅法");
    }

    // 与基类中methodB()构成重写(即原型⼀致，重写后序详细介绍)
    public void methodB() {
        System.out.println("Derived中的methodB()⽅法");
    }

    public void methodC() {
        // 对于同名的成员变量，直接访问时，访问的都是⼦类的

        a = 100;   // 等价于： this.a = 100;
        b = 101;   // 等价于：this.b = 101;
        // 注意：this是当前对象的引⽤

        // 访问⽗类的成员变量时，需要借助super关键字
        // super是获取到⼦类对象中从基类继承下来的部分
        super.a = 200;
        super.b = 201;

        // ⽗类和⼦类中构成重载的⽅法，直接可以通过参数列表区分访问⽗类还是⼦类⽅法

        methodA();      // 没有传参，访问⽗类中的methodA()
        methodA(20);    // 传递int参数，访问⼦类中的methodA(int)
        // 如果在⼦类中要访问重写的基类⽅法，则需要借助super关键字

        methodB();      // 直接访问，则永远访问到的都是⼦类中的methodA()，基类的⽆法访问到

        super.methodB(); // 访问基类的methodB()
    }

}